/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author BATAQUERO
 */
@Entity
@Table(name = "seguimiento_informe_mensual")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "SeguimientoInformeMensual.findAll", query = "SELECT s FROM SeguimientoInformeMensual s"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByIdSeguimientoMensual", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.idSeguimientoMensual = :idSeguimientoMensual"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByAceptacionPracticante", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.aceptacionPracticante = :aceptacionPracticante"),
    @NamedQuery(name = "SeguimientoInformeMensual.findByAceptacionSupervisorEnt", query = "SELECT s FROM SeguimientoInformeMensual s WHERE s.aceptacionSupervisorEnt = :aceptacionSupervisorEnt")})
public class SeguimientoInformeMensual implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_seguimiento_mensual")
    private Integer idSeguimientoMensual;
    @Size(max = 12)
    @Column(name = "aceptacion_practicante")
    private String aceptacionPracticante;
    @Size(max = 12)
    @Column(name = "aceptacion_supervisor_ent")
    private String aceptacionSupervisorEnt;
    @JoinColumn(name = "id_supervisor", referencedColumnName = "id_supervisor")
    @ManyToOne(optional = false)
    private Supervisor idSupervisor;
    @JoinColumn(name = "id_estudiante", referencedColumnName = "id_estudiante")
    @ManyToOne(optional = false)
    private Estudiante idEstudiante;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idSeguimientoMensual")
    private List<DetalleSeguimientoMensual> detalleSeguimientoMensualList;

    public SeguimientoInformeMensual() {
    }

    public SeguimientoInformeMensual(Integer idSeguimientoMensual) {
        this.idSeguimientoMensual = idSeguimientoMensual;
    }

    public Integer getIdSeguimientoMensual() {
        return idSeguimientoMensual;
    }

    public void setIdSeguimientoMensual(Integer idSeguimientoMensual) {
        this.idSeguimientoMensual = idSeguimientoMensual;
    }

    public String getAceptacionPracticante() {
        return aceptacionPracticante;
    }

    public void setAceptacionPracticante(String aceptacionPracticante) {
        this.aceptacionPracticante = aceptacionPracticante;
    }

    public String getAceptacionSupervisorEnt() {
        return aceptacionSupervisorEnt;
    }

    public void setAceptacionSupervisorEnt(String aceptacionSupervisorEnt) {
        this.aceptacionSupervisorEnt = aceptacionSupervisorEnt;
    }

    public Supervisor getIdSupervisor() {
        return idSupervisor;
    }

    public void setIdSupervisor(Supervisor idSupervisor) {
        this.idSupervisor = idSupervisor;
    }

    public Estudiante getIdEstudiante() {
        return idEstudiante;
    }

    public void setIdEstudiante(Estudiante idEstudiante) {
        this.idEstudiante = idEstudiante;
    }

    @XmlTransient
    public List<DetalleSeguimientoMensual> getDetalleSeguimientoMensualList() {
        return detalleSeguimientoMensualList;
    }

    public void setDetalleSeguimientoMensualList(List<DetalleSeguimientoMensual> detalleSeguimientoMensualList) {
        this.detalleSeguimientoMensualList = detalleSeguimientoMensualList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idSeguimientoMensual != null ? idSeguimientoMensual.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SeguimientoInformeMensual)) {
            return false;
        }
        SeguimientoInformeMensual other = (SeguimientoInformeMensual) object;
        if ((this.idSeguimientoMensual == null && other.idSeguimientoMensual != null) || (this.idSeguimientoMensual != null && !this.idSeguimientoMensual.equals(other.idSeguimientoMensual))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Persistencia.SeguimientoInformeMensual[ idSeguimientoMensual=" + idSeguimientoMensual + " ]";
    }
    
}
